We have a shortcode for Chunk custom post type like this: [get-chunk title="my_title"]

//// plugins/content-chunks/index.php

<?php
/*
Plugin Name: Content Chunks
Plugin URI: http://tipsfor.us/
Description: Display Chunks of Content from a custom post type "chunk"
Author: Everett Griffiths
Version: 0.1
Author URI: http://tipsfor.us
*/
include_once('includes/ContentChunks.php');
add_action( 'init', 'ContentChunks::register_chunk_post_type');
add_action( 'init', 'ContentChunks::register_shortcodes');
add_action('admin_menu', 'ContentChunks::create_admin_menu');

/*EOF*/
?>

//// plugins/content-chunks/includes/ContentChunks.php

<?php


/**
* ContentChunks
*
*/
class ContentChunks {
	 const admin_menu_slug 		= 'content_chunks';
	const default_shortcode_name = 'get-chunk';
   const option_key 			= 'content_chunks_shortcode';
	
  /**
   *
   */
   public static function register_chunk_post_type()
   {
      register_post_type( 'chunk', 
         array(
            'label' => 'Chunks',
            'labels' => array(
               'add_new'          => 'Add New',
               'add_new_item'      => 'Add New Chunk',
               'edit_item'         => 'Edit Chunk',
               'new_item'         => 'New Chunk',
               'view_item'         => 'View Chunk',
               'search_items'      => 'Search Chunks',
               'not_found'         => 'No chunks Found',
               'not_found_in_trash'=> 'Not Found in Trash',
            ),
            'description' => 'Reusable chunks of content',
            'public' => false,
            'show_ui' => true,
            'menu_position' => 5,
            'supports' => array('title','editor'),
         )
      );      
   }
	
	/**
   * Register the shortcodes used
   */
    public static function register_shortcodes()
   {
      $shortcode = get_option(self::option_key, self::default_shortcode_name);
      add_shortcode($shortcode, 'ContentChunks::get_chunk');
   }
   
   /**
   * Returns the content of a chunk, referenced via shortcode, e.g. put the
   * following in the content of a post or page:
   *    [get-chunk title="my_title"]
   * 
   * See http://codex.wordpress.org/Function_Reference/get_page_by_title
   * 
   * @param   array   $raw_args   Any arguments included in the shortcode. 
   *                        E.g. [get-chunk x="1" y="2"] translates to array('x'=>'1','y'=>'2')
   * @param   string   $content   Optional content if the shortcode encloses content with a closing tag, 
   *                        e.g. [get-chunk]My content here[/get-chunk]
   * @return   string   The text that should replace the shortcode.
   */   
   public static function get_chunk($raw_args, $content=null)
   {
      $defaults = array(
         'title' => '',
      );
      $sanitized_args = shortcode_atts( $defaults, $raw_args );
      if ( empty($sanitized_args['title']) )
      {
         return ''; 
      }
      $result = get_page_by_title( $sanitized_args['title'], 'OBJECT', 'chunk' );
      if ( $result )
      {
         return $result->post_content;
      }
   }
   
    /**
   * Create custom post-type menu
   */
   public static function create_admin_menu()
    {
       add_menu_page( 
          'Content Chunks',                // page title
          'Content Chunks',                // menu title
          'manage_options',                // capability
          self::admin_menu_slug,            // menu slug
          'ContentChunks::get_admin_page' // callback       
       );
   }
   
   /**
   * Prints the administration page for this plugin.
   */
   public static function get_admin_page()
   {
      if ( !empty($_POST) && check_admin_referer('content_chunks_options_update','content_chunks_admin_nonce') )
      {
         update_option(self::option_key, stripslashes($_POST['shortcode_name']));
         $msg = '<div class="updated"><p>Your settings have been <strong>updated</strong></p></div>';
      }
      $shortcode_name = esc_attr( get_option(self::option_key, self::default_shortcode_name) );
      include('admin_page.php');
   }
  
}
/*EOF*/
?>

//// plugins/content-chunks/includes/admin_page.php
<div class="wrap">
   <?php screen_icon(); ?>
   <h2>Content Chunks Administration</h2>
   <?php print $msg; ?>
   <form action="" method="post" id="content_chunks_form">
      <h3><label for="shortcode_name">Shortcode Name</label></h3>
      <p>Define the shortcode that will be used to trigger the retrieval of a Chunk, e.g. [get-chunk title="My Title"]<br/>
      <input type="text" id="shortcode_name" name="shortcode_name" value="<?php print $shortcode_name ?>" /></p>
      <p class="submit"><input type="submit" name="submit" value="Update" /></p>
      <?php wp_nonce_field('content_chunks_options_update','content_chunks_admin_nonce'); ?>
   </form>   
</div>
